
package com.yytek.gw.service;


import com.yytek.common.core.domain.R;
import com.yytek.common.core.domain.AttributeInfo;
import com.yytek.common.core.domain.Device;

import java.util.Map;

/**
 * 自定义连接驱动接口，开发的自定义驱动需要实现 read 和 write 接口，可以参考以提供的驱动模块写法</p>
 *
 * <ol>
 * <li>{@link DriverCustomService#initial} 初始化操作，需要根据不同的驱动实现该功能</li>
 * <li>{@link DriverCustomService#read} 读操作，需要根据不同的驱动实现该功能</li>
 * <li>{@link DriverCustomService#write} 写操作，需要根据不同的驱动实现该功能</li>
 * </ol>
 *
 * @author pnoker
 */
public interface DriverCustomService {
    /**
     * 初始化驱动 Driver
     */
    void initial();

    /**
     * Read Operation
     *
     * @param driverInfo 驱动信息
     * @param dataInfo  数据参数
     * @param device    设备信息
     * @return R
     * @throws Exception Exception
     */
    R read(Map<String, AttributeInfo> driverInfo, Map<String, AttributeInfo> dataInfo, Device device) throws Exception;

    /**
     * Write Operation
     *
     * @param driverInfo 驱动信息
     * @param dataInfo  数据参数
     * @param device    设备信息
     * @return R
     * @throws Exception Exception
     */
    R  write(Map<String, AttributeInfo> driverInfo, Map<String, AttributeInfo> dataInfo, Device device) throws Exception;

}
